package org.abettor.tanqiu.gameloop.object;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.abettor.tanqiu.gameloop.Constants;

import com.badlogic.gdx.math.Vector2;
/**
 * 在轨道上球的容器
 * @author jzh
 *
 */
public class RailBallContainer{
	LinkedList<Ball> inRailBall = new LinkedList<Ball>();//用来模拟正在进入队列的球的列表
	LinkedList<Ball> listBall = new LinkedList<Ball>();
	Ball collideBall = null;//正在碰撞的球
	/**
	 * 清空容器的操作
	 */
	public void clear(){
		inRailBall.clear();
		listBall.clear();
	}
	/**
	 * 检查是否有碰撞的操作
	 * @param ball
	 * @return
	 */
	public boolean checkCollide(Ball ball){
		Vector2 position = ball.getPosition();
		for(Ball b:inRailBall){
			Vector2 bv = b.getPosition();
			if(position.dst(bv) < Constants.BALL_RAIDUS*2){
				ball.setStatus(Ball.BALL_STATUS_INRAILING);
				collideBall = b;
				return true;
			}
		}
		collideBall = null;
		return false;
	}
	/**
	 * 获得碰撞的球，需要有碰撞时
	 * @return
	 */
	public Ball getTheCollideBall(){
		return collideBall;
	}
	/**
	 * 获得相邻球一个颜色的个数
	 * @param ball
	 * @return
	 */
	public List<Ball> getSameColorNeiborList(Ball ball){
		return null;
	}
	
	/**
	 * 向容器中加入球的操作
	 * @param ball
	 */
	public void addHeadBall(Ball ball){
		listBall.addFirst(ball);
	}
	/**
	 * 获得的第一个球
	 */
	public Ball getFirstBall(){
		return listBall.get(0);
	}
	/**
	 * 容器的长度
	 * @return
	 */
	public int size(){
		return listBall.size();
	}
	/**
	 * 获得相应位置的球
	 * @param index
	 * @return
	 */
	public Ball get(int index){
		return listBall.get(index);
	}
	/**
	 * 获得孤立的头的球
	 * @return
	 */
	public List<Ball> getHeaderBall(){
		List<Ball> retList = new ArrayList<Ball>();
		return retList;
	}
	/**
	 * 获得孤立的尾部的球
	 * @return
	 */
	public List<Ball> getTailBall(){
		List<Ball> retList = new ArrayList<Ball>();
		return retList;
	}
	/**
	 * 进行更新的操作
	 * @param updateTime
	 */
	public void update(float updateTime){
	}
	
}
